package com.xtt.designPattern.future;

/**
 * 代理真实数据
 * @author Administrator
 * @description 
 * @createTime 2017年6月22日 下午2:14:37
 */
public class FutureData implements Data{

	private RealData realData = null;
	private boolean isReady = false;//是否数据准备完成
	
	@Override
	public synchronized String getResult() throws InterruptedException {
		if(!isReady) {
			System.out.println("等待获取数据");
			this.wait();//等待数据被注入后返回结果
		}
		return realData.getResult();
	}
	
	public synchronized void setData(RealData realData) {
		System.out.println("设置真实数据");
		if(isReady) {
			return;//数据准备好不在重复设置
		}
		this.realData = realData;
		isReady = true;
		notify();
	}

}
